use std::fmt;
use std::fmt::{Show,Formatter};
use std::path::Path;
+use semver::Version;
use core::{
+ NameVer,
Dependency,
Manifest,
Registry,
self.get_manifest().get_name()
}
+ pub fn get_version<'a>(&'a self) -> &'a Version {
+ self.get_manifest().get_version()
+ }
+
pub fn get_dependencies<'a>(&'a self) -> &'a [Dependency] {
self.get_manifest().get_dependencies()
}
pub fn get_absolute_target_dir(&self) -> Path {
self.get_root().join(self.get_target_dir())
}
+
+ pub fn is_for_name_ver(&self, name_ver: &NameVer) -> bool {
+ self.get_name() == name_ver.get_name() && self.get_version() == name_ver.get_version()
+ }
}
impl Show for Package {
impl PackageSet {
pub fn new(packages: &[Package]) -> PackageSet {
- assert!(packages.len() > 0, "PackageSet must be created with at least one package")
+ //assert!(packages.len() > 0, "PackageSet must be created with at least one package")
PackageSet { packages: Vec::from_slice(packages) }
}
// Traverse the dependencies in topological order
for dep in try!(topsort(deps)).iter() {
- println!("Compiling {}", pkg);
+ println!("Compiling {}", dep);
try!(compile_pkg(dep, &deps_target_dir, &deps_target_dir, false));
}
Ok(())
}
- fn get(&self, _: &[NameVer]) -> CargoResult<Vec<Package>> {
+ fn get(&self, name_vers: &[NameVer]) -> CargoResult<Vec<Package>> {
Ok(self.paths.iter().filter_map(|path| {
match read_manifest(path) {
- Ok(pkg) => Some(pkg),
+ Ok(pkg) => {
+ if name_vers.iter().any(|nv| pkg.is_for_name_ver(nv)) {
+ Some(pkg)
+ } else {
+ None
+ }
+ }
Err(_) => None
}
}).collect())
match str::from_utf8(actual) {
None => Err(format!("{} was not utf8 encoded", description)),
Some(actual) => {
- ham::expect(actual == out, format!("{} was `{}`\n other output:\n{}", description, actual, str::from_utf8(extra)))
+ ham::expect(actual == out, format!("{} was:\n`{}`\n\nexpected:\n`{}`\n\nother output:\n`{}`", description, actual, out, str::from_utf8(extra)))
}
}
}
assert_that(p.cargo_process("cargo-compile"),
execs()
.with_status(101)
- .with_stderr(format!("src/foo.rs:1:1: 1:8 error: expected item but found `invalid`\nsrc/foo.rs:1 invalid rust code!\n ^~~~~~~\nfailed to execute: `rustc src/foo.rs --crate-type bin --out-dir {} -L {}`", target.display(), target.display()).as_slice()));
+ .with_stderr(format!("src/foo.rs:1:1: 1:8 error: expected item but found `invalid`\nsrc/foo.rs:1 invalid rust code!\n ^~~~~~~\nfailed to execute: `rustc src/foo.rs --crate-type bin --out-dir {} -L {}`", target.display(), target.join("deps").display()).as_slice()));
})
test!(cargo_compile_with_warnings_in_the_root_package {